package cn.wp.ewallet.wallet.service;

import cn.wp.ewallet.wallet.model.dto.WalletAccountInfoDto;
import cn.wp.ewallet.wallet.model.dto.WalletShqcAccountInfoDto;
import cn.wp.ewallet.wallet.model.dto.WalletInfoDto;
import cn.wp.ewallet.wallet.model.dto.WalletUsdtAccountInfoDto;
import cn.wp.ewallet.wallet.model.entity.WalletInfoDo;

import java.util.List;

/**
 * 钱包-业务逻辑层
 * Created by zhangyongli on 2020/01/08
 */
public interface WalletInfoService {

    /**
     * 创建钱包，生成钱包账户（SHQC/USDT--目前支持两个账户）
     * 规则：地址存在时update，否则insert
     * @param walletInfoDto
     * @return
     */
    String saveWallet(WalletInfoDto walletInfoDto);

    /**
     * 查询钱包SHQC账户资产信息
     * @return
     */
    WalletShqcAccountInfoDto getWalletShqcAccountInfo();

    /**
     * 查询钱包USDT账户资产信息
     * @return
     */
    WalletUsdtAccountInfoDto getWalletUsdtAccountInfo();


    /**
     * 查询全部USDT账户信息
     * @return
     */
    List<WalletAccountInfoDto> getAllWalletUsdtAccount();

    /**
     * 根据地址和币种类型查询账户信息
     * @param address
     * @param moneyTypeId
     * @param accountId
     * @return
     */
    WalletAccountInfoDto getWalletAccountByAddressAndMoneyType(String address, String moneyTypeId, String accountId);


    List<WalletInfoDo> getAllByWalletType();

    /**
     * 校验交易密码
     * @param transPwd
     * @return
     */
    Boolean checkTransPwd(String transPwd);

    /**
     * 查询全部账户信息by钱包地址
     * @return
     */
    List<WalletAccountInfoDto> getAllWalletAccountByAddress(String address);

}